package raf;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
import java.util.Scanner;

/**
 * 用户注册
 * 注册信息分为四块:用户名，密码，昵称，年龄
 * 除了年龄为int值之外，其余三个是字符串。
 * 将每个注册用户都写入user.dat文件中
 * 
 * @author 范传奇
 *
 */
public class RegDemo {
	public static void main(String[] args) throws IOException {
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入用户名:");
		String username = scanner.nextLine();
		System.out.println("请输入密码:");
		String password = scanner.nextLine();
		System.out.println("请输入昵称:");
		String nickname = scanner.nextLine();
		System.out.println("请输入年龄:");
		int age = scanner.nextInt();
		
		RandomAccessFile raf = new RandomAccessFile("user.dat","rw");
		//先将指针移动到文件末尾
		raf.seek(raf.length());
		/*
		 * 用户名，密码，昵称各占32字节。字符串故意留白的好处是便于修改，不会影响
		 * 其他数组。并且长度固定后格式统一，便于读取。
		 * 
		 */
		//写入用户名
		byte[] data = username.getBytes("UTF-8");
		data = Arrays.copyOf(data, 32);//扩容到32字节
		raf.write(data);//写入32字节
		
		data = password.getBytes("UTF-8");
		data = Arrays.copyOf(data, 32);//扩容到32字节
		raf.write(data);
		
		data = nickname.getBytes("UTF-8");
		data = Arrays.copyOf(data, 32);//扩容到32字节
		raf.write(data);
		
		raf.writeInt(age);
		System.out.println("注册完毕!");
		raf.close();
	}
}




